FSx for NetApp ONTAP のスナップショット自動削除設定をする(volume snapshot autodelete modify)
コーヒーが好きな emi です。
FSx for NetApp ONTAP(以下 FSxN と省略)ではスナップショットを自動削除する設定があります。本記事ではスナップショット自動削除設定をおこないます。
スナップショットの自動削除とは
スナップショットの自動削除は、「ボリュームサイズに応じたしきい値」または「Snapshot Reserve」を超過した場合に、取得済みのスナップショットを自動で削除する機能です。
データの変更が激しいシステムにおいてスナップショットを短い間隔で取得している場合、大きなスナップショットが大量に作成され、ボリュームを圧迫する可能性があります。この時スナップショットは予約された Snapshot Reserve という領域からあふれ(spill)、使用可能な空き領域を侵食していきます。
ボリュームの使用可能な空き領域が少なくなると、バックアップが失敗したり、iSCSI マウントしたボリュームがオフラインになったり、階層化が止まり書き込み不可になったりします。
スナップショットの自動削除は、スナップショットが必要以上に取得されボリュームを圧迫しないよう、しきい値を超えたら自動的に削除する設定です。
保持世代数の設定とは違う
カスタムスナップショットポリシーでは、-count1
などのオプションでスナップショットを保持する世代数を設定できます。これはあくまで「取得世代数」分だけスナップショットを保持する設定であり、ボリュームサイズに応じて削除されるようなものではありません。
事前準備
FSxN ボリュームサイズは 5GiB で作成しておきます。LUN を 4GiB で設定し、Windows Server に iSCSI 接続しました。
また、今回はあらかじめ Snapshot Reserve を 1% に設定しておきました。Snapshot Reserve の変更方法は以下ブログを参照ください。
ボリュームの空き容量は 18.67% です。
volume show-space で確認したボリュームの内訳(クリックで展開)
FsxId00d1bd3ff74723825::> volume show-space -vserver emiki-fsxn-svm -volume emiki_fsxn_vol1 Vserver: emiki-fsxn-svm Volume Name: emiki_fsxn_vol1 Volume MSID: 2155477438 Volume DSID: 1026 Vserver UUID: a292aaa0-e422-11ee-bbde-43b9b7eb70fb Aggregate Name: aggr1 Aggregate UUID: f81e95e6-e421-11ee-bbde-43b9b7eb70fb Hostname: FsxId00d1bd3ff74723825-01 User Data: 4.02GB User Data Percent: 80% Deduplication: 4KB Deduplication Percent: 0% Temporary Deduplication: - Temporary Deduplication Percent: - Filesystem Metadata: 356KB Filesystem Metadata Percent: 0% SnapMirror Metadata: - SnapMirror Metadata Percent: - Tape Backup Metadata: - Tape Backup Metadata Percent: - Quota Metadata: - Quota Metadata Percent: - Inodes: 20KB Inodes Percent: 0% Inodes Upgrade: - Inodes Upgrade Percent: - Snapshot Reserve: 51.20MB Snapshot Reserve Percent: 1% Snapshot Reserve Unusable: - Snapshot Reserve Unusable Percent: - Snapshot Spill: - Snapshot Spill Percent: - Performance Metadata: 420KB Performance Metadata Percent: 0% Total Used: 4.07GB Total Used Percent: 81% Total Physical Used Size: 17.23MB Physical Used Percentage: 0% Logical Used Size: 4.07GB Logical Used Percent: 81% Logical Available: - FsxId00d1bd3ff74723825::>
Snapshot Reserve: 51.20MB
、Snapshot Reserve Percent: 1%
となっています。
スナップショット自動削除設定
変更前確認
volume snapshot autodelete show コマンドで、変更前の状態を確認します。
実行コマンド
volume snapshot autodelete show -vserver emiki-fsxn-svm -volume emiki_fsxn_vol1
▼実行結果
FsxId00d1bd3ff74723825::> volume snapshot autodelete show -vserver emiki-fsxn-svm -volume emiki_fsxn_vol1 Vserver Name: emiki-fsxn-svm Volume Name: emiki_fsxn_vol1 Enabled: false Commitment: try Defer Delete: user_created Delete Order: oldest_first Defer Delete Prefix: (not specified) Target Free Space: 20% Trigger: volume Destroy List: none Is Constituent Volume: false FsxId00d1bd3ff74723825::>
デフォルトでは Enabled: false
、Target Free Space: 20%
、Trigger: volume
になっています。
Delete Order: oldest_first
は、スナップショットが自動削除される際古い順から削除するという設定です。
スナップショット自動削除設定
volume snapshot autodelete modify コマンドで、スナップショット自動削除設定を有効にします。
実行コマンド
volume snapshot autodelete modify -vserver emiki-fsxn-svm -volume emiki_fsxn_vol1 -enabled true -target-free-space 18 -trigger snap_reserve
-enabled true
:スナップショット自動削除設定を有効-target-free-space 18
:Target Free Space は「空き領域がここで指定した割合になるまで、スナップショットを削除し続ける」という設定です。今回ボリュームの空き領域が既にデフォルトの 20% を切っているので、削除され過ぎてしまうかと考え、現在の空き容量に合わせて 18% にしました。-trigger snap_reserve
:自動削除を開始するトリガーを、今回は Snapshot Reserve を超えた瞬間にします。
▼実行結果
FsxId00d1bd3ff74723825::> volume snapshot autodelete modify -vserver emiki-fsxn-svm -volume emiki_fsxn_vol1 -enabled true -target-free-space 18 -trigger snap_reserve Volume modify successful on volume emiki_fsxn_vol1 of Vserver emiki-fsxn-svm. FsxId00d1bd3ff74723825::>
変更後確認
実行コマンド
volume snapshot autodelete show -vserver emiki-fsxn-svm -volume emiki_fsxn_vol1
▼実行結果
FsxId00d1bd3ff74723825::> volume snapshot autodelete show -vserver emiki-fsxn-svm -volume emiki_fsxn_vol1 Vserver Name: emiki-fsxn-svm Volume Name: emiki_fsxn_vol1 Enabled: true Commitment: try Defer Delete: user_created Delete Order: oldest_first Defer Delete Prefix: (not specified) Target Free Space: 18% Trigger: snap_reserve Destroy List: none Is Constituent Volume: false FsxId00d1bd3ff74723825::>
Enabled: true
、Target Free Space: 18%
、Trigger: snap_reserve
に変更できました。
Snapshot Reserve に設定した領域からスナップショットがあふれそうになった(spill)際にスナップショットが自動削除されるか確認
では、カスタムスナップショットポリシーを作成して割り当てて、ちゃんとスナップショットが自動削除されるのか検証します。
カスタムスナップショットポリシーは以下トグル内で作成しました。
5 分毎にスナップショットを作成するカスタムスナップショットポリシーの作成(クリックで展開)
以下のブログを参考にしてください。
5 分毎に実行するジョブスケジュール(emiki_5min
)の作成
job schedule cron create -vserver emiki-fsxn-svm -name emiki_5min -minute "0,5,10,15,20,25,30,35,40,45,50,55"
▼実行結果
FsxId00d1bd3ff74723825::> job schedule cron create -vserver emiki-fsxn-svm -name emiki_5min -minute "0,5,10,15,20,25,30,35,40,45,50,55" FsxId00d1bd3ff74723825::>
意図した値でスナップショットジョブスケジュールが作成されたか確認
job schedule cron show
▼ 実行結果
FsxId00d1bd3ff74723825::> job schedule cron show Cluster Vserver Name Description ------- -------- ----------- -------------------------------------------------- FsxId00d1bd3ff74723825 FsxId00d1bd3ff74723825 10min @:00,:10,:20,:30,:40,:50 12-hourly @0:15,12:15 5min @:00,:05,:10,:15,:20,:25,:30,:35,:40,:45,:50,:55 6-hourly @0:15,6:15,12:15,18:15 8hour @2:15,10:15,18:15 daily @0:10 hourly @:05 monthly 1@0:20 pg-15-minutely @:10,:25,:40,:55 pg-6-hourly @3:03,9:03,15:03,21:03 pg-daily @0:10 pg-daily-set2 @6:25 pg-daily-set3 @12:40 pg-daily-set4 @18:55 pg-hourly @:07 pg-hourly-set2 @:22 pg-hourly-set3 @:37 pg-hourly-set4 @:52 pg-remote-15-minutely @:00,:15,:30,:45 pg-remote-6-hourly @3:08,9:08,15:08,21:08 pg-remote-daily @0:15 pg-remote-hourly @:12 pg-remote-weekly Sun@0:20 pg-weekly Sun@0:15 pg-weekly-set2 Tue@4:30 pg-weekly-set3 Thu@10:44 pg-weekly-set4 Sat@16:59 weekly Sun@0:15 FsxId00d1bd3ff74723825 emiki-fsxn-svm emiki_5min @:00,:05,:10,:15,:20,:25,:30,:35,:40,:45,:50,:55 29 entries were displayed. FsxId00d1bd3ff74723825::>
スナップショットポリシーの作成
項目 | 値 |
---|---|
policy_name(スナップショットポリシー名) | emiki_snapshot_policy_200_5min |
schedule1_name(スケジュール 1) | emiki_5min |
copies_to_retain1(保持するコピー数) | 200 |
snapshot_prefix1(スナップショット保存時につけるプレフィックス) | emiki_5min |
volume snapshot policy create -vserver emiki-fsxn-svm -policy emiki_snapshot_policy_200_5min -enabled true -schedule1 emiki_5min -count1 200 -prefix1 emiki_5min
▼ 実行結果例
FsxId00d1bd3ff74723825::> volume snapshot policy create -vserver emiki-fsxn-svm -policy emiki_snapshot_policy_200_5min -enabled true -schedule1 emiki_5min -count1 200 -prefix1 emiki_5min FsxId00d1bd3ff74723825::>
意図した値でスナップショットポリシーが作成されたか確認
volume snapshot policy show
▼ 実行結果例
FsxId00d1bd3ff74723825::> volume snapshot policy show Vserver: FsxId00d1bd3ff74723825 Number of Is Policy Name Schedules Enabled Comment ------------------------ --------- ------- ---------------------------------- default 3 true Default policy with hourly, daily & weekly schedules. Schedule Count Prefix SnapMirror Label Retention Period -------------- ----- ------------- ------------------ ------------------ hourly 6 hourly - 0 seconds daily 2 daily daily 0 seconds weekly 2 weekly weekly 0 seconds default-1weekly 3 true Default policy with 6 hourly, 2 daily & 1 weekly schedule. Schedule Count Prefix SnapMirror Label Retention Period -------------- ----- ------------- ------------------ ------------------ hourly 6 hourly - 0 seconds daily 2 daily - 0 seconds weekly 1 weekly - 0 seconds none 0 false Policy for no automatic snapshots. Schedule Count Prefix SnapMirror Label Retention Period -------------- ----- ------------- ------------------ ------------------ - - - - - Vserver: emiki-fsxn-svm Number of Is Policy Name Schedules Enabled Comment ------------------------ --------- ------- ---------------------------------- emiki_snapshot_policy_200_5min 1 true - Schedule Count Prefix SnapMirror Label Retention Period -------------- ----- ------------- ------------------ ------------------ emiki_5min 200 emiki_5min - 0 seconds 4 entries were displayed. FsxId00d1bd3ff74723825::>
ここでこちらのスクリプトを使用してボリューム内で常にファイルの変更が発生している状態を再現します。
作成したスナップショットポリシーをボリュームに設定します。(途中 y 入力)
実行コマンド
volume modify -volume emiki_fsxn_vol1 -snapshot-policy emiki_snapshot_policy_200_5min
▼実行結果
FsxId00d1bd3ff74723825::> volume modify -volume emiki_fsxn_vol1 -snapshot-policy emiki_snapshot_policy_200_5min Warning: You are changing the Snapshot policy on volume "emiki_fsxn_vol1" to "emiki_snapshot_policy_200_5min". Snapshot copies on this volume that do not match any of the prefixes of the new Snapshot policy will not be deleted. However, when the new Snapshot policy takes effect, depending on the new retention count, any existing Snapshot copies that continue to use the same prefixes might be deleted. See the 'volume modify' man page for more information. Do you want to continue? {y|n}: y Volume modify successful on volume emiki_fsxn_vol1 of Vserver emiki-fsxn-svm. FsxId00d1bd3ff74723825::>
スナップショットポリシーが変更できたか確認します。
実行コマンド
volume show -volume emiki_fsxn_vol1 -fields snapshot-policy
▼実行結果
FsxId00d1bd3ff74723825::> volume show -volume emiki_fsxn_vol1 -fields snapshot-policy vserver volume snapshot-policy -------------- --------------- ------------------------------ emiki-fsxn-svm emiki_fsxn_vol1 emiki_snapshot_policy_200_5min FsxId00d1bd3ff74723825::>
スナップショットの取得状況を確認します。Snapshot Reserve: 51.20MB
、Snapshot Reserve Percent: 1%
なので、取得したスナップショットの大きさの合計が 51.20MB
を大幅に超えることなく古い順に削除されていくような挙動をしてくれれば成功です。
実行コマンド
volume snapshot show -volume emiki_fsxn_vol1
▼ 実行結果
FsxId00d1bd3ff74723825::> volume snapshot show -volume emiki_fsxn_vol1 ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- emiki-fsxn-svm emiki_fsxn_vol1 emiki_5min.2024-03-17_1335 9.26MB 0% 36% emiki_5min.2024-03-17_1340 8.99MB 0% 35% emiki_5min.2024-03-17_1345 9.47MB 0% 36% emiki_5min.2024-03-17_1350 8.72MB 0% 34% 4 entries were displayed. FsxId00d1bd3ff74723825::>
FsxId00d1bd3ff74723825::> volume snapshot show -volume emiki_fsxn_vol1 ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- emiki-fsxn-svm emiki_fsxn_vol1 emiki_5min.2024-03-17_1340 8.99MB 0% 35% emiki_5min.2024-03-17_1345 9.47MB 0% 36% emiki_5min.2024-03-17_1350 9.13MB 0% 35% emiki_5min.2024-03-17_1355 9.14MB 0% 35% 4 entries were displayed. FsxId00d1bd3ff74723825::>
FsxId00d1bd3ff74723825::> volume snapshot show -volume emiki_fsxn_vol1 ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- emiki-fsxn-svm emiki_fsxn_vol1 emiki_5min.2024-03-17_1345 9.47MB 0% 36% emiki_5min.2024-03-17_1350 9.13MB 0% 36% emiki_5min.2024-03-17_1355 9.14MB 0% 36% emiki_5min.2024-03-17_1400 9.50MB 0% 37% emiki_5min.2024-03-17_1405 3.50MB 0% 18% 5 entries were displayed. FsxId00d1bd3ff74723825::>
スナップショットの保持世代数は 200 にしていますが、大体 4~5 つスナップショットを取得した時点で古いスナップショットが削除されているのが分かります。意図した挙動であることが確認できました。
スナップショットの自動削除設定によりバックアップのためのスナップショット取得が失敗すると、それに伴いバックアップも失敗する
2024/3/21 追記
FSxN のバックアップは内部的に SnapMirror という ONTAP 独自のスナップショットを利用したブロックレベルコピーを使っているので、バックアップ時に差分を見るためのスナップショットが取得されています。
また、スナップショットの自動削除設定では、SnapMirror によってロックされているスナップショットは削除されません。
削除されないスナップショット
デフォルトでは 、Snapshotの自動削除では、SnapMirrorによってロックされているSnapshot、ボリューム、 LUN、NVMeネームスペース、 ファイルのクローンは削除されません。
Snapshot の自動削除の使用方法 - NetApp
つまり、スナップショットの自動削除設定を有効化した状態で、バックアップにより Snapshot Reserve を超えるような巨大なスナップショットが一発で取得された場合、SnapMirror でロックされているため削除することができず、スナップショットは残っているもののバックアップには失敗しているという状態になります。
Amazon FSx was unable to create your backup because the volume's Snapshot autodelete policy is deleting the backup snapshot before the backup can be created. To continue taking Amazon FSx backups, please modify your Snapshot autodelete policy to ensure there's sufficient space in the Snapshot reserve for the backup snapshot. For more information, see https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/snapshots-ontap.html#snapshot-autodelete-policy.
(機械翻訳)ボリュームのスナップショット自動削除ポリシーが、バックアップを作成する前にバックアップスナップショットを削除しているため、Amazon FSxはバックアップを作成できませんでした。Amazon FSxのバックアップを取り続けるには、スナップショットの自動削除ポリシーを変更して、スナップショットリザーブにバックアップスナップショット用の十分なスペースがあることを確認してください。詳細については、https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/snapshots-ontap.html#snapshot-autodelete-policy を参照してください。
バックアップのために取得された(SnapMirror でロックされた)スナップショットも自動削除設定で削除したい場合、volume snapshot autodelete modify の -commitment
オプションで削除するように設定することもできるようです。
ただし、そうすると失敗したバックアップが残る形になると思われます。
データ移行中など、データの差分が大きく発生しスナップショットが巨大になることが考えられる場合はスナップショットの取得やバックアップを止めておき、安定稼働が確認できてから余裕をもったボリュームサイジングのうえスナップショットの取得やバックアップ取得をすると良さそうです。
また、FSxN でサポートされているバックアップではなく、同じ大きさの FSxN ファイルシステムを構築し、SnapMirror でデータを同期することでバックアップとする方法もあります。以下ブログをご参照ください。
おわりに
スナップショットの自動削除設定を有効化し、挙動を確認しました。どなたかのお役に立てば幸いです。